{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "harmful-woman", "metadata": {}, "outputs": [], "source": [ "# This tutorial will introduce simple implementations of for loops." ] }, { "cell_type": "code", "execution_count": 2, "id": "demonstrated-consensus", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n" ] } ], "source": [ "# Here's the simplest for loop.\n", "for i in range(10):\n", " print(i)" ] }, { "cell_type": "code", "execution_count": 3, "id": "civic-alliance", "metadata": {}, "outputs": [], "source": [ "# Note that the loop starts from i = 0 and has 10 iterations. Therefore,\n", "# the output is i = 1, 2, 3, ..., 9. Also, Python will loop over only the lines\n", "# following the 'for' statement that are indented. Note the difference in the \n", "# outputs from the following two blocks of code." ] }, { "cell_type": "code", "execution_count": 4, "id": "complete-ministry", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i**2 is in the loop:\n", "0\n", "0\n", "1\n", "1\n", "2\n", "4\n", "3\n", "9\n", "4\n", "16\n", "5\n", "25\n", "6\n", "36\n", "7\n", "49\n", "8\n", "64\n", "9\n", "81\n" ] } ], "source": [ "# i**2 is in the loop:\n", "print('i**2 is in the loop:')\n", "for i in range(10):\n", " print(i)\n", " print(i**2)" ] }, { "cell_type": "code", "execution_count": 5, "id": "suburban-desire", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "i**2 is NOT in the loop:\n", "0\n", "1\n", "2\n", "3\n", "4\n", "5\n", "6\n", "7\n", "8\n", "9\n", "81\n" ] } ], "source": [ "# i**2 is NOT in the loop:\n", "print('\\ni**2 is NOT in the loop:')\n", "for i in range(10):\n", " print(i)\n", "print(i**2)" ] }, { "cell_type": "code", "execution_count": 6, "id": "great-lender", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Step by two:\n", "0\n", "2\n", "4\n", "6\n", "8\n" ] } ], "source": [ "# The loop can be made to increment in steps of two as follows:\n", "import numpy as np\n", "print('\\nStep by two:')\n", "for i in np.arange(0, 10, 2):\n", " print(i)" ] }, { "cell_type": "code", "execution_count": 7, "id": "encouraging-record", "metadata": {}, "outputs": [], "source": [ "# Often, you may wish to perform calculations within a loop and then store\n", "# the results of those calculations in a list." ] }, { "cell_type": "code", "execution_count": 8, "id": "powerful-needle", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x: [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. 1.1 1.2 1.3 1.4 1.5 1.6 1.7\n", " 1.8]\n" ] } ], "source": [ "# The first step is to create a list of x values that we will iterate over\n", "x = np.arange(0, 1.9, 0.1)\n", "print('x:', x)" ] }, { "cell_type": "code", "execution_count": 9, "id": "governmental-fisher", "metadata": {}, "outputs": [], "source": [ "# Next, we will create an empty list that we will use to store the results\n", "# of out calculation.\n", "results = []" ] }, { "cell_type": "code", "execution_count": 10, "id": "urban-induction", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Results: [-0.0, 0.019198493654414298, 0.03919043057194907, 0.060070244503352854, 0.08194889882372983, 0.1049575951738314, 0.1292523806498573, 0.15501976986589477, 0.18248332254542876, 0.21191058440110952, 0.24361834453296421, 0.27797032560786367, 0.31535137406103264, 0.3560759822264981, 0.4001223909632299, 0.44643492253916167, 0.49135988237282596, 0.526464135360927, 0.5400000000000005]\n" ] } ], "source": [ "# We can now use our results list within a for loop and append values\n", "# to list as the loop iterates.\n", "umax = 0.54\n", "M = -4.2703\n", "D = 1.8\n", "for i in x:\n", " results = results + [(umax/M)*np.log(1 + (np.exp(M)-1)*(i/D)*np.exp(1 - i/D))]\n", "print('Results:',results)" ] }, { "cell_type": "code", "execution_count": 11, "id": "desperate-hostel", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# In fact, we can now easiy plot results vs x.\n", "import matplotlib.pyplot as plt\n", "plt.plot(x, results, 'bo')\n", "plt.xlabel('x');\n", "plt.ylabel('results');\n", "plt.axis((0, 1.8, 0, 0.6));" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 5 }